home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / io / CharToByteUnicode.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.7 KB  |  127 lines

  1. package sun.io;
  2.  
  3. import java.security.AccessController;
  4. import sun.security.action.GetPropertyAction;
  5.  
  6. public class CharToByteUnicode extends CharToByteConverter {
  7.    static final char BYTE_ORDER_MARK = '\ufeff';
  8.    protected boolean usesMark;
  9.    private boolean markWritten;
  10.    static final int UNKNOWN = 0;
  11.    static final int BIG = 1;
  12.    static final int LITTLE = 2;
  13.    protected int byteOrder;
  14.  
  15.    public CharToByteUnicode() {
  16.       this.usesMark = true;
  17.       this.markWritten = false;
  18.       this.byteOrder = 0;
  19.       String var1 = (String)AccessController.doPrivileged(new GetPropertyAction("sun.io.unicode.encoding", "UnicodeBig"));
  20.       if (var1.equals("UnicodeBig")) {
  21.          this.byteOrder = 1;
  22.       } else if (var1.equals("UnicodeLittle")) {
  23.          this.byteOrder = 2;
  24.       } else {
  25.          this.byteOrder = 1;
  26.       }
  27.  
  28.    }
  29.  
  30.    public CharToByteUnicode(int var1, boolean var2) {
  31.       this.usesMark = true;
  32.       this.markWritten = false;
  33.       this.byteOrder = 0;
  34.       this.byteOrder = var1;
  35.       this.usesMark = var2;
  36.    }
  37.  
  38.    public CharToByteUnicode(boolean var1) {
  39.       this();
  40.       this.usesMark = var1;
  41.    }
  42.  
  43.    public String getCharacterEncoding() {
  44.       switch (this.byteOrder) {
  45.          case 1:
  46.             return this.usesMark ? "UnicodeBig" : "UnicodeBigUnmarked";
  47.          case 2:
  48.             return this.usesMark ? "UnicodeLittle" : "UnicodeLittleUnmarked";
  49.          default:
  50.             return "UnicodeUnknown";
  51.       }
  52.    }
  53.  
  54.    public int convert(char[] var1, int var2, int var3, byte[] var4, int var5, int var6) throws ConversionBufferFullException, MalformedInputException {
  55.       this.charOff = var2;
  56.       this.byteOff = var5;
  57.       if (var2 >= var3) {
  58.          return 0;
  59.       } else {
  60.          int var7 = var2;
  61.          int var11 = var5;
  62.          int var9 = var6 - 2;
  63.          if (this.usesMark && !this.markWritten) {
  64.             if (var5 > var9) {
  65.                throw new ConversionBufferFullException();
  66.             }
  67.  
  68.             if (this.byteOrder == 1) {
  69.                var11 = var5 + 1;
  70.                var4[var5] = -2;
  71.                var4[var11++] = -1;
  72.             } else {
  73.                var11 = var5 + 1;
  74.                var4[var5] = -1;
  75.                var4[var11++] = -2;
  76.             }
  77.  
  78.             this.markWritten = true;
  79.          }
  80.  
  81.          if (this.byteOrder == 1) {
  82.             while(var7 < var3) {
  83.                if (var11 > var9) {
  84.                   this.charOff = var7;
  85.                   this.byteOff = var11;
  86.                   throw new ConversionBufferFullException();
  87.                }
  88.  
  89.                char var15 = var1[var7++];
  90.                var4[var11++] = (byte)(var15 >> 8);
  91.                var4[var11++] = (byte)(var15 & 255);
  92.             }
  93.          } else {
  94.             while(var7 < var3) {
  95.                if (var11 > var9) {
  96.                   this.charOff = var7;
  97.                   this.byteOff = var11;
  98.                   throw new ConversionBufferFullException();
  99.                }
  100.  
  101.                char var10 = var1[var7++];
  102.                var4[var11++] = (byte)(var10 & 255);
  103.                var4[var11++] = (byte)(var10 >> 8);
  104.             }
  105.          }
  106.  
  107.          this.charOff = var7;
  108.          this.byteOff = var11;
  109.          return var11 - var5;
  110.       }
  111.    }
  112.  
  113.    public int flush(byte[] var1, int var2, int var3) {
  114.       this.byteOff = this.charOff = 0;
  115.       return 0;
  116.    }
  117.  
  118.    public void reset() {
  119.       this.byteOff = this.charOff = 0;
  120.       this.markWritten = false;
  121.    }
  122.  
  123.    public int getMaxBytesPerChar() {
  124.       return 4;
  125.    }
  126. }
  127.